package com.ruoyi.supply.service.impl;

import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.supply.enums.DfStatusEnum;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.supply.mapper.AdSpotMapper;
import com.ruoyi.supply.domain.AdSpot;

/**
 * 广告位Service业务层处理
 * 
 * @author Ryan
 * @date 2025-06-02
 */
@Service
public class AdSpotService extends ServiceImpl<AdSpotMapper,AdSpot>
{
    @Autowired
    private AdSpotMapper adSpotMapper;

    /**
     * 查询广告位
     * 
     * @param id 广告位主键
     * @return 广告位
     */
    public AdSpot selectAdSpotById(Long id)
    {
        return adSpotMapper.selectAdSpotById(id);
    }

    /**
     * 查询广告位列表
     * 
     * @param adSpot 广告位
     * @return 广告位
     */
    public List<AdSpot> selectAdSpotList(AdSpot adSpot)
    {
        return adSpotMapper.selectAdSpotList(adSpot);
    }

    /**
     * 新增广告位
     * 
     * @param adSpot 广告位
     * @return 结果
     */
    public int insertAdSpot(AdSpot adSpot)
    {
        adSpot.setStatus(DfStatusEnum.DF.getCode());
        return adSpotMapper.insert(adSpot);
    }

    /**
     * 修改广告位
     * 
     * @param adSpot 广告位
     * @return 结果
     */
    public int updateAdSpot(AdSpot adSpot)
    {
        return adSpotMapper.updateById(adSpot);
    }

    /**
     * 批量删除广告位
     * 
     * @param ids 需要删除的广告位主键
     * @return 结果
     */
    public int deleteAdSpotByIds(Long[] ids)
    {
        return adSpotMapper.deleteBatchIds(Arrays.asList(ids));
    }

    /**
     * 删除广告位信息
     * 
     * @param id 广告位主键
     * @return 结果
     */
    public int deleteAdSpotById(Long id)
    {
        return adSpotMapper.deleteById(id);
    }


    public List<String> getBanner(){
        List<AdSpot> list = lambdaQuery().
                select(AdSpot::getCover)
                .eq(AdSpot::getStatus, DfStatusEnum.DF.getCode())
                .orderByDesc(AdSpot::getSort)
                .list();
        if(CollUtil.isEmpty(list)){
            return Collections.emptyList();
        }
        return list.stream().map(AdSpot::getCover).collect(Collectors.toList());
    }
}
